// arrow function 目的：简化函数书写，并且添加一些新的特性

// 普通函数
function inc(number) {
    return number + 1
}

// 箭头函数
const inc1 = n => n + 1
// 若参数是一个可不加（），同样函数体是一句话也可不加{}

// arrow_function 不会改变this的指向

const person = {
    name: "sanfeng_hu",
    sayName1: function() {
        console.log(`name is ${this.name}`)
    },

    sayName2:() => {
        console.log(`name is ${this.name}`)  
    },

    sayNameAsync1:function(){
        setTimeout(function(){
            console.log(this.name)
        }, 1000)
    },

    sayNameAsync2: function(){
        console.log(this)
        setTimeout(()=>{
            console.log(this.name)
        }, 1000)
    }
}
person.sayName1()
person.sayName2()

// 所谓不会改变this的指向,由上边可知，当代码运行时，是处于window
// 全局环境的，此环境很显然没 name,但是第一个函数打印出来，说明this
// 的指向被改变为 person

person.sayNameAsync1()
person.sayNameAsync2()